package cn.iocoder.yudao.module.system.service.erp.customermanage;
import java.util.*;

import cn.iocoder.yudao.module.system.controller.admin.erp.customermanage.vo.CustomerManagePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.erp.customermanage.vo.CustomerManageSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.erp.customermanage.CustomerManageDO;
import jakarta.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 客户管理员关系 Service 接口
 *
 * @author 芋道源码
 */
public interface CustomerManageService {

    /**
     * 创建客户管理员关系
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createCustomerManage(@Valid CustomerManageSaveReqVO createReqVO);

    /**
     * 更新客户管理员关系
     *
     * @param updateReqVO 更新信息
     */
    void updateCustomerManage(@Valid CustomerManageSaveReqVO updateReqVO);

    /**
     * 删除客户管理员关系
     *
     * @param id 编号
     */
    void deleteCustomerManage(Long id);

    /**
     * 获得客户管理员关系
     *
     * @param id 编号
     * @return 客户管理员关系
     */
    CustomerManageDO getCustomerManage(Long id);

    /**
     * 获得客户管理员关系分页
     *
     * @param pageReqVO 分页查询
     * @return 客户管理员关系分页
     */
    PageResult<CustomerManageDO> getCustomerManagePage(CustomerManagePageReqVO pageReqVO);

    /**
     * 获取普通管理员的客户
     *
     * @param adminId 普通管理员
     * @return 客户管理员关系
     */
    List<Long>getCustomerIds(Long adminId);
    /**
     * 获得客户管理员关系
     *
     * @param customerId 编号
     * @return 客户管理员关系
     */
    CustomerManageDO byCustomerId(Long customerId);
    /**
     * 获得客户管理员关系
     *
     * @param customerId 编号
     * @return 客户管理员关系
     */
    void deleteAdminIdCustomerId(Long customerId,Long adminId);

}